﻿using System;
using System.Collections.Generic;

using System.Text;
using System.Data;

namespace Sinacor.Tools.Dado
{
    public class StatusMensagem : DadoBase<Sinacor.Tools.Entidade.StatusMensagem>
    {
        public override void incluir(Sinacor.Tools.Entidade.StatusMensagem entidade)
        {
            StringBuilder sql = new StringBuilder(@" INSERT INTO TFWDSTATUSMENSAGEM (CODIGOSTATUSMENSAGEM, DESCRICAOSTATUSMENSAGEM) VALUES (" + entidade.Id.ToString() + ", '" + entidade.Descricao + "')");
            ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        public override void alterar(Sinacor.Tools.Entidade.StatusMensagem entidade)
        {
            StringBuilder sql = new StringBuilder(@" UPDATE TFWDSTATUSMENSAGEM SET DESCRICAOSTATUSMENSAGEM = '" + entidade.Descricao + "' where CODIGOSTATUSMENSAGEM = " + entidade.Id.ToString());
            ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        public override void deletar(Sinacor.Tools.Entidade.StatusMensagem entidade)
        {
            StringBuilder sql = new StringBuilder(@" DELETE FROM TFWDSTATUSMENSAGEM WHERE CODIGOSTATUSMENSAGEM = " + entidade.Id.ToString());
            ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        public override List<Sinacor.Tools.Entidade.StatusMensagem> consultar(Sinacor.Tools.Entidade.StatusMensagem entidade)
        {
            StringBuilder sql = new StringBuilder(@" SELECT CODIGOSTATUSMENSAGEM As ""Id"", DESCRICAOSTATUSMENSAGEM As ""Descricao"" FROM TFWDSTATUSMENSAGEM WHERE (1=1)");
            if (entidade.Id >= 0)
            {
                sql.Append(" AND CODIGOSTATUSMENSAGEM = " + entidade.Id.ToString() + " ");
            }

            if (!string.IsNullOrEmpty(entidade.Descricao))
            {
                sql.Append(" AND DESCRICAOSTATUSMENSAGEM LIKE '%" + entidade.Descricao.Trim() + "%'");
            }

            ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem>();
            IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text);
            return dados.getListResult(cmd);           
        }

        public object JaEstaCadastrado(Sinacor.Tools.Entidade.StatusMensagem entidade)
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT 1 FROM TFWDSTATUSMENSAGEM WHERE (1=1) AND DESCRICAOSTATUSMENSAGEM = '" + entidade.Descricao.Trim() + "'");
            ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                cmd.Connection.Close();
            }
            return retorno;          
        }

        public object buscarProximoId()
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT MAX(CODIGOSTATUSMENSAGEM) + 1 FROM TFWDSTATUSMENSAGEM ");
            ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                if (retorno == DBNull.Value)
                    retorno = null;
                cmd.Connection.Close();
            }
            return retorno; 
        }

        public object jaPossuiMensagem(Sinacor.Tools.Entidade.StatusMensagem entidade)
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT COUNT(CODIGOMENSAGEM) FROM TFWDMENSAGEM WHERE CODIGOSTATUSMENSAGEM = '" + entidade.Id.ToString() + "'");
            ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                cmd.Connection.Close();
            }
            return retorno;          
        }
    }
}